Micron Document
NexusPi Git Node

Node / mirrors / microReticulum_Firmware / files / UDPInterface.h

Displaying Raw • Download

UDPInterface.h HEAD (592c826d) Text, 2.80 KB

T8b949e// Copyright (C) 2026, Chad Attermann

T8b949e// This program is free software: you can redistribute it and/or modify
T8b949e// it under the terms of the GNU General Public License as published by
T8b949e// the Free Software Foundation, either version 3 of the License, or
T8b949e// (at your option) any later version.

T8b949e// This program is distributed in the hope that it will be useful,
T8b949e// but WITHOUT ANY WARRANTY; without even the implied warranty of
T8b949e// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
T8b949e// GNU General Public License for more details.

T8b949e// You should have received a copy of the GNU General Public License
T8b949e// along with this program. If not, see <https://www.gnu.org/licenses/>.

Tff7b72#Tff7b72pragma once

Tff7b72#Tff7b72include T8b949e<microReticulum.h>

Tff7b72#Tff7b72include T8b949e<WiFi.h>
Tff7b72#Tff7b72include T8b949e<WiFiUdp.h>

Tff7b72#Tff7b72define UDP_LOCAL_HOST "0.0.0.0"
Tff7b72#Tff7b72define UDP_REMOTE_HOST "255.255.255.255"
Tff7b72#Tff7b72define UDP_PORT 4242

T8b949e//#include "Remote.h"
Tff7b72extern Te6edf3WiFiUDP Te6edf3udpTb4b4b4;
Tff7b72extern Tffa657bool Te6edf3wifi_initializedTb4b4b4;

Tffa657uint16_t Te6edf3udp_port Tff7b72= Te6edf3UDP_PORTTb4b4b4;

Te6edf3class Te6edf3UDPInterface Tff7b72: Te6edf3public Te6edf3RNSTff7b72:Tff7b72:Te6edf3InterfaceImpl Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3UDPInterfaceTb4b4b4(Tff7b72const Tffa657char Tff7b72*Te6edf3nameTb4b4b4) Tff7b72: Te6edf3RNSTff7b72:Tff7b72:Te6edf3InterfaceImplTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
Te6edf3_IN Tff7b72= Tffa657trueTb4b4b4;
Te6edf3_OUT Tff7b72= Tffa657trueTb4b4b4;
Te6edf3_HW_MTU Tff7b72= T79c0ff1064Tb4b4b4;
Tb4b4b4}
Te6edf3UDPInterfaceTb4b4b4(Tb4b4b4) Tff7b72: Te6edf3UDPInterfaceTb4b4b4(Ta5d6ff"Ta5d6ffUDPInterfaceTa5d6ff"Tb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3virtual Tff7b72~Te6edf3UDPInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3_name Tff7b72= Ta5d6ff"Ta5d6ffdeletedTa5d6ff"Tb4b4b4;
Tb4b4b4}
Te6edf3protectedTff7b72:
Te6edf3virtual Tffa657void Te6edf3handle_incomingTb4b4b4(Tff7b72const Te6edf3RNSTff7b72:Tff7b72:Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4) Tb4b4b4{
Te6edf3TRACEFTb4b4b4(Ta5d6ff"Ta5d6ffUDPInterface.handle_incoming: (%u bytes) data: %sTa5d6ff"Tb4b4b4, Te6edf3dataTb4b4b4.Te6edf3sizeTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dataTb4b4b4.Te6edf3toHexTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3c_strTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3TRACETb4b4b4(Ta5d6ff"Ta5d6ffUDPInterface.handle_incoming: sending packet to rns...Ta5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3try Tb4b4b4{
Te6edf3InterfaceImplTff7b72:Tff7b72:Te6edf3handle_incomingTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3catch Tb4b4b4(Tff7b72const Te6edf3stdTff7b72:Tff7b72:Te6edf3bad_allocTff7b72&Tb4b4b4) Tb4b4b4{
Te6edf3ERRORTb4b4b4(Ta5d6ff"Ta5d6ffUDPInterface::handle_incoming: bad_alloc - out of memoryTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3catch Tb4b4b4(Te6edf3stdTff7b72:Tff7b72:Te6edf3exceptionTff7b72& Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ERRORFTb4b4b4(Ta5d6ff"Ta5d6ffUDPInterface::handle_incoming: %sTa5d6ff"Tb4b4b4, Te6edf3eTb4b4b4.Te6edf3whatTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3virtual Tffa657bool Te6edf3send_outgoingTb4b4b4(Tff7b72const Te6edf3RNSTff7b72:Tff7b72:Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3success Tff7b72= Tffa657trueTb4b4b4;
Te6edf3try Tb4b4b4{
T8b949e//if (udp.availableForWrite()) {
T8b949e//wl_status_t wifi_status = WiFi.status();
T8b949e//if (wifi_status == WL_CONNECTED) {
Tff7b72if Tb4b4b4(Te6edf3wifi_initializedTb4b4b4) Tb4b4b4{
Te6edf3TRACEFTb4b4b4(Ta5d6ff"Ta5d6ffUDPInterface.send_outgoing: (%u bytes) data: %sTa5d6ff"Tb4b4b4, Te6edf3dataTb4b4b4.Te6edf3sizeTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dataTb4b4b4.Te6edf3toHexTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3c_strTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3udpTb4b4b4.Te6edf3beginPacketTb4b4b4(Te6edf3UDP_REMOTE_HOSTTb4b4b4, Te6edf3udp_portTb4b4b4) Tff7b72!Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657size_t Te6edf3wrote Tff7b72= Te6edf3udpTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3dataTb4b4b4.Te6edf3dataTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dataTb4b4b4.Te6edf3sizeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3udpTb4b4b4.Te6edf3endPacketTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3wrote Tff7b72!Tff7b72= Te6edf3dataTb4b4b4.Te6edf3sizeTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3WARNINGFTb4b4b4(Ta5d6ff"Ta5d6ffFailed to send %u packet over UDPInterfaceTa5d6ff"Tb4b4b4, Te6edf3wroteTb4b4b4)Tb4b4b4;
Te6edf3success Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
T8b949e// Perform post-send housekeeping
Te6edf3InterfaceImplTff7b72:Tff7b72:Te6edf3handle_outgoingTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3catch Tb4b4b4(Tff7b72const Te6edf3stdTff7b72:Tff7b72:Te6edf3bad_allocTff7b72&Tb4b4b4) Tb4b4b4{
Te6edf3ERRORTb4b4b4(Ta5d6ff"Ta5d6ffUDPInterface::send_outgoing: bad_alloc - out of memoryTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3success Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Te6edf3catch Tb4b4b4(Te6edf3stdTff7b72:Tff7b72:Te6edf3exceptionTff7b72& Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ERRORFTb4b4b4(Ta5d6ff"Ta5d6ffUDPInterface::send_outgoing: %sTa5d6ff"Tb4b4b4, Te6edf3eTb4b4b4.Te6edf3whatTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3success Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3successTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;

Served by rngit 1.5.2 - Generated in 0.07s